<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de suppression
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 5 || $GLOBALS['USER']['admin'])){
	
		// l'identifiant de la donnée à supprimer est indiqué par un entier
		if(isset($_GET['id']) && numericInt($_GET['id'])){

?>
<?php
//------------------------------------------------------------ Suppression des données

/********************************* Règles :

	- id doit désigner une seule aire géographique
	- L'aire géographique doit exister dans la BDD
	- L'aire géographique ne doit pas être une racine de l'arborescence si des sous-aires lui sont liées

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	//---------------------------------- Contrôle des données ----------------------------------
		
	$nb_airesgeo = valueExists((int)$_GET['id'], "CODEAIREGEOGRAPHIQUE", "aire_geographique", $connexion);
	
	if($nb_airesgeo == 0){ // l'aire géographique n'existe pas
		$statut[] = "L'aire géographique indiquée n'existe pas";
		$erreur = true;
	}else{
		
		// On récupère les informations nécessaires au contrôle des données
		$query_recuperation_airegeo = "SELECT a.AIR_CODEAIREGEOGRAPHIQUE as aireSup, T2.nbLiensSSAire, T3.nbLiensEspece ";
		$query_recuperation_airegeo .= "FROM aire_geographique a ";
		$query_recuperation_airegeo .= ", (SELECT COUNT(*) as nbLiensSSAire FROM aire_geographique sa WHERE sa.AIR_CODEAIREGEOGRAPHIQUE = ".$_GET['id'].") T2 ";
		$query_recuperation_airegeo .= ", (SELECT COUNT(*) as nbLiensEspece FROM espece e WHERE e.CODEAIREGEOGRAPHIQUE = ".$_GET['id'].") T3 ";
		$query_recuperation_airegeo .= "WHERE CODEAIREGEOGRAPHIQUE = ".$_GET['id']." ";
		
		$result_recuperation_airegeo = mysql_query($query_recuperation_airegeo, $connexion) or logError("RECUPERATION AIRE GEOGRAPHIQUE-".$query_recuperation_airegeo."-".mysql_error());
		
		if(mysql_num_rows($result_recuperation_airegeo) == 1){ // on a réussi à récupérer les données de l'aire géographique à supprimer
			
			$tab_recuperation_airegeo = mysql_fetch_row($result_recuperation_airegeo);
			
			$aireSup = $tab_recuperation_airegeo[0];
			
			if(is_null($tab_recuperation_airegeo[0])){ // L'aire est une racine
				if($tab_recuperation_airegeo[1] > 0){ // Il y a des sous-aires liées à cette aire
					$statut[] = "Cette aire est racine et contient ".$tab_recuperation_airegeo[1]." sous-aire(s)";
					$erreur = true;
				}
			}
			
			if($tab_recuperation_airegeo[2] > 0){ // Il y a des espèces liées à cette aire
				$statut[] = "Cette aire est liée à ".$tab_recuperation_airegeo[2]." espèce(s)";
				$erreur = true;
			}
			
		}else{
			$statut[] = "Une donnée n'a pas pu être vérifiée";
			$erreur = true;
		}
		
		mysql_free_result($result_recuperation_airegeo);
		
	}
	
	//---------------------------------- Suppression de l'aire géographique ----------------------------------
	
	if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
	
		if(!is_null($aireSup)){ // Si l'aire n'est pas une racine
			
			// Les sous-aires sont liées à l'aire supérieure
			$query_remonte_sousairegeo = "UPDATE aire_geographique SET AIR_CODEAIREGEOGRAPHIQUE = ".$aireSup." WHERE AIR_CODEAIREGEOGRAPHIQUE = ".$_GET['id'];
			$result_remonte_sousairegeo = mysql_query($query_remonte_sousairegeo, $connexion) or logError("REMONTE SOUS AIRE GEOGRAPHIQUE-".$query_remonte_sousairegeo."-".mysql_error());
			
			if($result_remonte_sousairegeo === false){
				$statut[] = "Erreur critique lors de la suppression de l'aire géographique";
				$erreur = true;
			}
		
		}
		
		if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
		
			$query_suppression_liens_airegeo = "DELETE FROM est_lie_pays WHERE CODEAIREGEOGRAPHIQUE = ".$_GET['id'];
			$result_suppression_liens_airegeo = mysql_query($query_suppression_liens_airegeo, $connexion) or logError("SUPPRESSION LIENS AIRE GEOGRAPHIQUE-".$query_suppression_liens_airegeo."-".mysql_error());
			
			if($result_suppression_liens_airegeo === true){
	
				// Suppression des informations de la table AIRE_GEOGRAPHIQUE
				$query_suppression_airegeo = "DELETE FROM aire_geographique WHERE CODEAIREGEOGRAPHIQUE = ".$_GET['id'];
				$result_suppression_airegeo = mysql_query($query_suppression_airegeo, $connexion) or logError("SUPPRESSION AIRE GEOGRAPHIQUE-".$query_suppression_airegeo."-".mysql_error());
				
				if($result_suppression_airegeo === true){
					$statut[] = "L'aire géographique a été supprimée - redirection dans 2 sec...";
					logAction("AIRE GEOGRAPHIQUE (id: ".$_GET['id'].") SUPPRIMEE par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
				}else{
					$statut[] = "Erreur critique lors de la suppression de l'aire géographique";
					$erreur = true;
				}
				
			}else{
				$statut[] = "Erreur critique lors de la suppression de l'aire géographique";
				$erreur = true;
			}
			
		}

	}

?>
<?php
//------------------------------------------------------------ Affichage du statut
	
	if($erreur){
		boutonRetour("index.php?p=gestion/airegeographiques_gere"); // appel à la fonction boutonRetour() définie dans fonctions.php
		afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
	}else{
		afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
		redirection("gestion/airegeographiques_gere", 2);
	}

?>
<?php
	if($erreur){
?>
<div class="information">
	<div class="titre">Information</div>
	<h4>Erreurs de suppression :</h4>
	<p>
		Si la ressource à supprimer est liée à d'autres éléments, vous ne pourrez pas la supprimer.<br />
		Si vous souhaitez tout de même la supprimer, il vous faudra préalablement supprimer les éléments auxquels elle est liée.
	</p>
</div>
<?php
	}
?>
<?php
//------------------------------------------------------------ Accès refusé à la page

		}else{
			afficherStatut("L'aire géographique n'est pas ou mal indiquée", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>